#include"Sysuttl.h"

Sysuttl::Sysuttl(string fn):filename(fn){}

//功能：获取当前位置偏移 offset 个位置的 字符 并回到当前位置
char Sysuttl::Myfseek(int offset)
{
	if (fseek(fp, offset, SEEK_CUR) != 0)
	{
		ERR_LOG("fseek fail");
	}
	char temp = GetData();
	if (fseek(fp, abs(offset) - 1, SEEK_CUR) != 0)
	{
		ERR_LOG("fseek fail");
	}

	return temp;
}

//功能：获取一个字符
char Sysuttl::GetData()
{
	char ch = fgetc(fp);
	return ch;
}

//功能：向fp中写入2个相同的字符
void Sysuttl::WriteDoubleData(char ch)
{
	WriteData(ch);
	WriteData(ch);
}

//功能：向fp中写入1个字符
void Sysuttl::WriteData(char ch)
{
	fputc(ch, fp);
}

//功能：向fp中分别写入2个不同的字符
void Sysuttl::WriteData(char ch1, char ch2)
{
	fputc(ch1, fp);
	fputc(ch2, fp);
}

void Sysuttl::OpenFile(const char* mode)
{
	fp = fopen(filename.c_str(), mode);
	if (fp == nullptr)
	{
		ERR_LOG("fail to open");
	}
}

void Sysuttl::CloseFile()
{
	fclose(fp);
}

FILE* Sysuttl::getFp()
{
	return fp;
}
